﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntitiesLayer.Entities;
using BusinnesLayer.LogicBusiness;
using System.Web.Services;
using System.Web.Script.Services;
using DataLayer.DAO;

namespace ClinicaSanPablo
{
    public partial class SeguimientoServicioNoConforme : System.Web.UI.Page
    {
        string fileName;
        string localPath;
        string savePath;

        private static Combosbl ptb = new Combosbl();
        private static Accionbl atb = new Accionbl();        
        private ServicioNoConformebl sncBl = new ServicioNoConformebl();

        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboMotivoGeneral()
        {
            List<Combos> getMotivoGeneral = ptb.GetAllComboMotivoGeneral();
            return jsonSerializer.Serialize(getMotivoGeneral);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboMotivoEspecifico(string motivoGeneral)
        {
            List<Combos> getMotivoEspecifico = ptb.GetAllComboMotivoEspecifico(motivoGeneral);
            return jsonSerializer.Serialize(getMotivoEspecifico);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboEstadoAccion()
        {
            List<Combos> getEstadoAccion = ptb.GetAllComboEstadoAccion();
            return jsonSerializer.Serialize(getEstadoAccion);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ObtenerCantidadFinalizado(string codSNC)
        {
            try
            {

                int acn = atb.GetConteoFinalizado(codSNC);

                var data = new
                {
                    resultado = true,
                    getconteo = acn
                };
                return jsonSerializer.Serialize(data);
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
          
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            string codSNC = Request.QueryString["codigoSNC"];
                        
            try
            {
                ServicioNoConforme snc = sncBl.ObtenerSNC(codSNC);

                lblRegistradoPor.Text = snc.NumDocEmpleado;
                lblDirigidoA.Text = snc.CodArea;
                lblDescripcion.Text = snc.DesSNC;                
            }
            catch (Exception ex)
            {

            }

            txtCodSNC.Value = codSNC;    

        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string DeleteAccion(string codAccion)
        {
            try
            {
                Accionbl del = new Accionbl();

                Accion delete = new Accion
                {
                    CodAccion = codAccion,
                };
                del.DeleteAccion(delete);

                var data = new
                {
                    resultado = true
                };
                return jsonSerializer.Serialize(data);
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }

        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string UpdateAccion(string codAccion, string desAccion, string obsAccion, string numEmpleado, string codEstado, string codUsuario)
        {
            try
            {
                Accionbl sugerenciabl = new Accionbl();

                Accion updateSugerencia = new Accion
                {
                    CodAccion = codAccion,
                    DesAccion = desAccion,
                    ObsAccion = obsAccion,
                    NumDocEmpleado = numEmpleado,
                    CodEstado = codEstado,
                    CodUsuario = codUsuario
                };
                sugerenciabl.UpdateAccion(updateSugerencia);

                var data = new
                {
                    resultado = true
                };
                return jsonSerializer.Serialize(data);
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }

        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string UpdateSeguimientoSNC(string codSNC, string codMotivoGeneral, string codMotivoEspecifico, string codEstado)
        {
            try
            {
                ServicioNoConformebl sncbl = new ServicioNoConformebl();

                ServicioNoConforme snc = new ServicioNoConforme
                {
                    CodSNC = codSNC,
                    CodMotivoGeneral = codMotivoGeneral,
                    CodMotivoEspecifico = codMotivoEspecifico,
                    CodEstado = codEstado
                };

                sncbl.UpdateSeguimientoSNC(snc);

                var data = new
                {
                    resultado = true
                };
                return jsonSerializer.Serialize(data);
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }

        }       

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            string cmbSituacion = (string)Request.Form["ctl00$master$cmbSituacion"];
            string codSNC = Request.QueryString["codigoSNC"];

            if (uploadFile1.HasFile)
            {
                fileName = uploadFile1.FileName;
                savePath = Server.MapPath("~/archivos/") + fileName;
                localPath = "/archivos/" + fileName;
                uploadFile1.SaveAs(savePath);
            }

            try
            {
                Accion accion = new Accion();
                {
                    accion.DesAccion = txtAccion.Text;
                    accion.ObsAccion = txtObservaciones.Text;
                    accion.NumDocEmpleado = txtCodigoEmpleado.Value;
                    accion.CodEstado = cmbSituacion;
                    accion.CodSNC = codSNC;
                    accion.CodUsuario = "43811752";

                    DateTime fechaHoy = DateTime.Today;
                    string fechaActual = fechaHoy.ToString("dd/MM/yyyy");

                    accion.FechaRegistro = Convert.ToDateTime(fechaActual);
                   
                    if (fileName != null)
                    {
                        accion.NomArchivo = fileName;
                    }
                    else
                    {
                        accion.NomArchivo = "";
                    }
                    if (localPath != null)
                    {
                        accion.RutaArchivo = localPath;
                    }
                    else
                    {
                        accion.RutaArchivo = "";
                    }

                };
                atb.InsertAccion(accion);

                txtConteoAccion.Value = atb.GetConteoFinalizado(codSNC).ToString();
                txtAccion.Text = "";
                txtCodigoEmpleado.Value = "";
                txtResponsable.Text = "";
                txtObservaciones.Text = "";                

            }
            catch (Exception ex)
            {

            }

        }


    }
}